package com.qiyang.stream;

import java.util.stream.IntStream;

/**
 * Created on 2018/8/6.
 *
 * @author sehuaqi.
 * 描述：
 */
public class StreamDemo1 {


    public static void main(String args[]) {
        //执行函数

        int[] nums = {1, 2, 3};

        //外部迭代（串行、性能低）
        int sum = 0;
        for (int i : nums) {
            sum += i;
        }

        System.out.println("输出结果为：" + sum);

        //使用Stream内部迭代（惰性求值，并行，短路操作）
        //map就是中间操作，返回stream
        //sum就是终止操作，返回结果
//        int sum2 = IntStream.of(nums).map(i -> i * 2).sum();
        int sum2 = IntStream.of(nums).map(StreamDemo1::doubleNum).sum();
        System.out.println("输出结果为：" + sum2);

        //所谓惰性求值，就是终止操作没有执行的情况下，中间操作不会执行
        IntStream.of(nums).map(StreamDemo1::doubleNum);

    }

    public static int doubleNum(int i) {
        System.out.println("执行了乘以2");
        return i * 2;
    }

}
